package biz

import (
	v1 "MdfServer/api/room/v1"
	"context"
)

// RoomEvent 房间事件（用于实时推送）
type RoomEvent struct {
	Type string   `json:"type"` // "room_update" 或 "battle_start"
	Room *v1.Room `json:"room"` // 房间信息
	Time int64    `json:"time"` // 事件时间戳
}

// RealtimeUseCase 实时推送接口（由具体实现提供，如WebSocket或消息队列）
type RealtimeUseCase interface {
	BroadcastToRoom(ctx context.Context, roomID string, event *RoomEvent) error // 向房间内所有玩家推送事件
	NotifyBattleStart(ctx context.Context, room *v1.Room) error                 // 通知对战服务开始
}

// 空实现（如果暂时不需要实时推送，可用于开发环境）
type NopRealtimeUseCase struct{}

func (n *NopRealtimeUseCase) BroadcastToRoom(ctx context.Context, roomID string, event *RoomEvent) error {
	return nil
}

func (n *NopRealtimeUseCase) NotifyBattleStart(ctx context.Context, room *v1.Room) error {
	return nil
}
